Mit CreateObject() wird eine neue Instanz erzeugt, welche (logischerweise) noch keine Elemente in der Documents-Collection() hält.
Diese Auflistung dann durchlaufen zu wollen macht keinen Sinn, da "leer".
Mit GetObject() holst Du DIr zwar eine Instanz, es ist aber nicht ausgeschlossen, dass eben Dein Dokument nicht in der ersten, sondern x-ten Instanz laufen könnte.
Wenn Dir der Dateiname jedoch bekannt ist, kann Dir GetObject() durch Angabe des Dateinamens(inkl. Pfad) aber auch die korrekte Instanz holen bzw referenzieren.
Folgendes holt Dir eine Referenz auf das Document via GetObject():
Dim wdDoc As Microsoft.Office.Interop.Word.Document = DirectCast(GetObject("c:\test\Doc1.docx"), Microsoft.Office.Interop.Word.Document)
Nachteil:
War das Dokument nicht geöffnet, wird eine Instanz erzeugt und das Dokument geöffnet.
Das heisst, es wird ein neuer Winword.Exe-Prozess gestartet, welcher unsichtbar, aber später auch wieder zu schliessen ist.
Eine Referenz auf die Application (um später schliessen zu können) holst Du Dir wie folgt:
Dim wdApp As Microsoft.Office.Interop.Word.Application = wdDoc.Application
Genügt Dir das nicht, weil Du bei mehrere geöffneten Instanzen die x-Instanz aber haben möchtest, musst Du Dich durch die RunningObjectTable (ROT) arbeiten.
|